perm filename SEC.SAI[NET,KMC] blob
sn#165199 filedate 1975-06-21 generic text, type T, neo UTF8
BEGIN
DEFINE TAB="'11", LF="'12", FORM="'14", CR="'15",
ALT="'33", DEL="'177", ↓=" &'15&'12 ", CREEP="(CR&DEL&'21)";
DEFINE TIL="STEP 1 UNTIL", LN="LENGTH",
SAY="OUTSTR",PROC="PROCEDURE";
INTEGER INCH,OUCH,CNT,BRK,EOF,FLAG; COMMENT INPUT/OUTPUT GLOBALS;
DEFINE DSKI="OPEN(INCH←GETCHAN,""DSK"",1,4,0,CNT←200,BRK,EOF)",
BDSKI="OPEN(INCH←GETCHAN,""DSK"",8,40,0,CNT←200,BRK,EOF)",
DSKO="OPEN(OUCH←GETCHAN,""DSK"",1,0,4,0,0,0)",
BDSKO="OPEN(OUCH←GETCHAN,""DSK"",8,0,40,0,0,0)",
FILI(FILE)="LOOKUP(INCH,FILE,FLAG)",
FILO(FILE)="ENTER(OUCH,FILE,FLAG)",
LPTO="OPEN(OUCH←GETCHAN,""LPT"",1,0,2,0,0,EOF←0)",
TTYI="OPEN(INCH←GETCHAN,""TTY"",1,2,0,CNT←200,BRK,EOF)",
TTYO="OPEN(OUCH←GETCHAN,""TTY"",1,0,2,0,0,0)";
PROC FILIN(STRING F); BEGIN DSKI; FILI(F) END;
PROC FILOUT(STRING F); BEGIN DSKO; FILO(F) END;
PROC FILOUTP(STRING F;INTEGER P); BEGIN DSKO; FILO(F); RENAME(OUCH,F,P,FLAG) END;
PROC BFILIN(STRING F); BEGIN BDSKI; FILI(F) END;
PROC BFILOUT(STRING F); BEGIN BDSKO; FILO(F) END;
STRING BLANKS;
DEFINE INLINE="INPUT(INCH,1)", TOTAB(S)="SCAN(S,13,BRK)";
STRING PROC LEFT(INTEGER L; STRING S);
RETURN(IF LN(S)<L THEN S&BLANKS[1 TO L-LN(S)] ELSE S[1 TO L]);
STRING PROC RIGHT(INTEGER L; STRING S);
RETURN(IF LN(S)<L THEN BLANKS[1 TO L-LN(S)]&S ELSE S[LN(S)-L+1 TO LN(S)]);
STRING PROC CENTER(INTEGER L; STRING S);
RETURN(IF LN(S)<L THEN BLANKS[1 TO (L-LN(S))DIV 2]&
S & BLANKS[1 TO (L-LN(S)+1)DIV 2] ELSE S[1 TO L]);
STRING PROC ASK(STRING S);
BEGIN OUTSTR(S); RETURN(INCHWL) END;
INTEGER PROC ROUND(REAL R); RETURN(R + .5);
DEFINE ITT(X,N) = "FOR X←1 STEP 1 UNTIL N DO";
DEFINE ∂=" &BLANK1& ";
STRING BLANK1,BLANK10,BLANK20,DELIMSS,FORMFEED;
INTEGER DICE, SW, P, P1, Q, Q1, I, I1, J, J1, K, K1, W, L, T, WFLAG;
INTEGER NEXTL,NEXTA,LI,SSLEN,ATLEN,ERROR,IDUM,INCH1,INCH2,EOF1,EOF2;
REAL R, RR, RRR;
STRING S, SS, SSS,ST,SY,SV,FILENAME,SU,LASTNAME,LASTLINE,ZEROKS,TOPIC,LASTB,AREA;
STRING S1,S2;
PRELOAD_WITH [11] 0;
INTEGER ARRAY AA[1:11];
STRING ARRAY SA[1:15];
INTEGER ARRAY DUMMAA[1:6,1:3];
BOOLEAN PROC EQS(STRING S);
RETURN(IF EQU(S,NULL) OR EQU(S," ") THEN TRUE ELSE FALSE);
PROC OUTB(INTEGER CHAN; STRING S);
BEGIN IF ¬EQU(SV,S[1 TO 6]) THEN BEGIN OUT(OUCH, NULL ↓ ); SV←S[1 TO 6]; END;
OUT(OUCH, S); END;
FORMFEED← '14;
ZEROKS←"000000000000";
BLANKS←" ";
BLANK1←" ";
BLANK20←" ";
BLANK10←" ";
FLAG←0;
DELIMSS← '15 & '12 & '40 & '11 & '14;
SETBREAK(1, '12, '15 & '14, "INS");
SETBREAK(13, '12 & '40, '15, "INS");
SETBREAK(14,DELIMSS & " ?.()","","INR");
SETBREAK(15,"αλ","","INR");
COMMENT BREAKSETS 17 AND 18 ARE RESERVED FOR TEMPORARY USE;
SW←0; J←0;
ITT(I,6) ITT(K,3) DUMMAA[I,K]←0;
ITT(I,5) SA[I]←" ";
COMMENT ********************************* ;
WHILE TRUE DO BEGIN "TOPBLOCK"
S←ASK("H FOR HELP -- GO?");
IF EQU(S, "X") THEN DONE "TOPBLOCK";
IF EQU(S, "H") THEN BEGIN
SAY("D for deleting DIA files from DIA,KMC " ↓ );
SAY("P for going thru DIA files " ↓ );
SAY("T for testing something" ↓ ↓ );
END; COMMENT END OF H ROUTINE;
COMMENT D ROUTINE FOR DELETING DIA FILES;
IF EQU(S,"D") THEN BEGIN "D"
SAY("Here we go deleting DIA files on FAUGHT " ↓ );
FILIN("PAR2.FIL");
SS←INPUT(INCH,1); IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
W←CVD(SS); RELEASE(INCH);
SAY("top number = " & CVS(W) ↓ );
COMMENT * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;
SS←ASK("WANT TO DELETE DIA FILES [Y,N]? ");
IF EQU(SS,"Y") THEN BEGIN "DEL"
SS←ASK("DELETE TO WHAT NUMBER [T FOR THRU.FIL]? ");
IF EQU(SS,"T") THEN BEGIN
FILIN("THRU.FIL");
SS←INPUT(INCH,1); IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
W←CVD(SS); RELEASE(INCH); END
ELSE W←CVD(SS);
SAY("top number = " & CVS(W) ↓ );
FILIN("DEL.FIL");
SS←INPUT(INCH,1); IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
J←CVD(SS); RELEASE(INCH);
SAY("bottom number = " & CVS(J) ↓ );
WHILE J≠W DO BEGIN "READDIA"
J←J+1;
SS←"P"&CVS(J)&".DIA"; COMMENT SAY("reading from "& SS ↓ );
FLAG←0; FILIN(SS); I←FLAG;
IF I≠0 THEN SAY(SS& " doesnt exist" ↓ )
ELSE BEGIN SAY("del "&SS ↓ ); IDUM←0; RENAME(INCH,NULL,0,IDUM);
IF IDUM THEN SAY("DELETE FAILED!!" ↓ ); END;
RELEASE(INCH);
SS←"P"&CVS(J)&"A.DIA"; COMMENT SAY("reading from "& SS ↓ );
FLAG←0; FILIN(SS); I←FLAG;
IF I≠0 THEN SAY(SS& " doesnt exist" ↓ )
ELSE BEGIN SAY("del "&SS ↓ ); IDUM←0; RENAME(INCH,NULL,0,IDUM);
IF IDUM THEN SAY("DELETE FAILED!!" ↓ ); END;
RELEASE(INCH);
SAY("thru "&CVS(J) ↓ );
END "READDIA" ;
IF W≠J THEN J←J-1; COMMENT DIDN'T REALLY GET THRU JTH FILE;
FILOUT("DEL.FIL"); OUT(OUCH,CVS(J) ↓ ); RELEASE(OUCH);
SAY("thru P" & CVS(J) ↓ );
SAY("done with deleting DIA files" ↓ );
END "DEL";
END "D" ;
COMMENT P ROUTINE FOR FOR GOING THRU DIA FILES;
IF EQU(S,"P") THEN BEGIN "P"
SAY("Here we go thru DIA files on FAUGHT " ↓ );
FILIN("PAR2.FIL");
SS←INPUT(INCH,1); IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
I←CVD(SS); RELEASE(INCH);
SAY("top number = " & CVS(I) ↓ );
FILIN("THRU.FIL");
SS←INPUT(INCH,1); IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
J←CVD(SS); RELEASE(INCH);
SAY("bottom number = " & CVS(J) ↓ );
SS←ASK("Want to quit?"); IF EQU(SS,"Y") THEN DONE "TOPBLOCK";
FILIN("OUT.FIL");
SS←INPUT(INCH,1); IF EQU(SS,NULL) THEN SS←INPUT(INCH,1);
K←CVD(SS); RELEASE(INCH);
FILOUT("OUT.FIL"); OUT(OUCH,CVS(K+1) ↓ ); RELEASE(OUCH);
SS←"S" & CVS(K) & ".OUT"; SAY("writing out on "&SS ↓ ); FILOUT(SS);
WHILE (J+1)≠I DO BEGIN "READDIA"
J←J+1;
SS←"P"&CVS(J)&".DIA"; FILIN(SS);
IF FLAG≠0 THEN BEGIN SAY(SS& " doesnt exist" ↓ ); CONTINUE "READDIA"; END;
SSS←INPUT(INCH,1); SSS←SSS[1 TO 2]; I1←CVD(SSS);
RELEASE(INCH);
ST←"P"&CVS(J)&"A.DIA"; FILIN(ST);
IF FLAG≠0 THEN BEGIN SAY(ST& " doesnt exist" ↓ ); CONTINUE "READDIA"; END;
SSS←INPUT(INCH,1); SSS←SSS[1 TO 2]; J1←CVD(SSS);
RELEASE(INCH);
IF I1<J1 THEN SS←ST; COMMENT TAKE THE SECOND FILE IF THEY ARE NOT EQUAL;
SAY("reading from "& SS ↓ ); FILIN(SS);
IF FLAG≠0 THEN BEGIN SAY(SS& " doesnt exist" ↓ ); CONTINUE "READDIA"; END;
SS←INPUT(INCH,1); ST←NULL;
WHILE ¬EOF DO BEGIN "READFILE"
SV←ST; ST←SU←NULL;
WHILE ¬EOF AND EQS(SS) DO SS←INPUT(INCH,1);
WHILE ¬EOF AND ¬EQS(SS) AND EQU(ST,NULL) DO
BEGIN ST←SU; SU←SS; SS←INPUT(INCH,1); END;
COMMENT NOW HAVE INPUT IN ST, OUTPUT IN SU, PREVIOUS INPUT IN SV;
SAY(ST ↓ ); S1←ST; S←NULL;
SAY(SU ↓ ↓ );
IF EQU(ST,NULL) OR EQU(ST[1 TO 2],"PD") OR EQU(ST[1 TO 3],"%PD")
THEN SAY("ignore this " ↓ )
ELSE S←ASK("---? ");
IF EQU(S,NULL) THEN CONTINUE "READFILE";
IF EQU(S,"H") OR EQU(S,"?") THEN
BEGIN SAY("Copy, Enter sentence, Previous sent, Done with Dialog, Xit" ↓ );
S←ASK("do what?"); END;
IF EQU(S,"X") THEN DONE "READDIA";
IF EQU(S,"D") THEN DONE "READFILE";
IF EQU(S,"E") THEN S1←ASK("type in the new sentence ");
IF EQU(S,"O") THEN S1←SV;
IF EQU(S,"P") THEN S1←SV;
IF EQU(S,"E") OR EQU(S,"P") OR EQU(S,"C") OR EQU(S,"V") OR EQU(S,"O") THEN
OUT(OUCH, S1 ↓ );
END "READFILE" ;
SAY("thru "&CVS(J) ↓ ); RELEASE(INCH);
END "READDIA" ;
IF I≠(J+1) THEN J←J-1; COMMENT DIDN'T REALLY GET THRU JTH FILE;
RELEASE(OUCH);
FILOUT("THRU.FIL"); OUT(OUCH,CVS(J) ↓ ); RELEASE(OUCH);
SAY("thru P" & CVS(J) ↓ );
SAY("done with DIA files" ↓ );
END "P" ;
COMMENT T ROUTINE FOR TESTING THINGS;
IF EQU(S,"T") THEN BEGIN
END; COMMENT END OF S=T;
END "TOPBLOCK" ; COMMENT END TO INFINITE LOOP;
COMMENT END OF PROGRAM;
END;